from base.views import TestView, BeginCelery, ConfDictViewset, UploadLocalFile, test_fuc
from user.views import LoginView, UserViewset, UserInfo, AuthViewset, WeChatUpdateUserViewset, WeChatMiniLoginView, \
    WeChatAppLoginView, MemberViewset, MobileLoginView, MobileCodeView, UserDictExportViewset, PermissionViewset, \
    MenuPermissionViewset, MenuAuthViewset
from django.urls import path, include
from django.conf import settings
from rest_framework.routers import DefaultRouter
# 新版swagger
from django.conf.urls import url
from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

schema_view = get_schema_view(
    openapi.Info(
        title="Django RESTfulAPI",
        default_version='v3.0',
        description="Ddescription",
        terms_of_service="https://blog.csdn.net/haeasringnar",
        contact=openapi.Contact(email="aeasringnar@163.com"),
        license=openapi.License(name="MIT License"),
    ),
    # url="http://www.test.com",
    public=True,
    permission_classes=(permissions.AllowAny,),
)
# 使用 viewset 路由管理
router = DefaultRouter()
# 账号管理
router.register(r'user', UserViewset, basename='账号管理')
# 普通用户管理
router.register(r'member', MemberViewset, basename='用户管理')
# 权限管理
router.register(r'auth', AuthViewset, basename='权限管理')
# 系统字典管理
router.register(r'confdict', ConfDictViewset, basename='系统字典管理')
# 全文检索路由 检索系统字典
# router.register(r'searchdict', ConfDictSearchView, basename='全文检索系统字典')
# 修改用户个人信息
router.register(r'updateuser', WeChatUpdateUserViewset, basename='修改个人信息')

# 通用权限对应关系
router.register(r'permission', PermissionViewset, basename='通用权限对应关系')
# 菜单路由对应关系
router.register(r'MenuPermission', MenuPermissionViewset, basename='菜单路由对应关系')

# 权限管理
router.register(r'MenuAuth', MenuAuthViewset, basename='菜单权限管理')

# ------------------合同执行情况管理   新增 views ------------------------------- #
from contract.views import ContractDetailViewSet, ContractViewSet, SupplierViewSet, UserGroupViewset

# 合同执行情况管理
router.register(r'ContractDetail', ContractDetailViewSet, basename='合同执行情况管理')

# 合同管理
router.register(r'Contract', ContractViewSet, basename='合同管理')

# 供应商管理
router.register(r'Supplier', SupplierViewSet, basename='供应商管理')

# 用户组管理
router.register(r'UserGroup', UserGroupViewset, basename='用户组管理')

# ------------------销售合同执行情况管理   新增 views ------------------------------- #
from contract.sale_views import SaleContractDetailViewSet, SaleContractViewSet, SaleSupplierViewSet

# 合同执行情况管理
router.register(r'SaleContractDetail', SaleContractDetailViewSet, basename='销售合同执行情况管理')

# 合同管理
router.register(r'SaleContract', SaleContractViewSet, basename='销售合同管理')

# 供应商管理
router.register(r'SaleSupplier', SaleSupplierViewSet, basename='销售供应商管理')

# ------------------矿石库存情况管理   新增 views ------------------------------- #
from mineral.views import *

# 矿物管理
router.register(r'MineralType', MineralTypeViewset, basename='矿物管理')
# 货品管理
router.register(r'MineralProduct', ProductViewset, basename='货品管理')
# 库存执行管理
router.register(r'MineralInventoryPerform', InventoryPerformViewset, basename='库存执行管理')
# 库存管理
router.register(r'MineralInventory', InventoryViewset, basename='库存管理')
# 生产计划管理
router.register(r'MineralProductionPlan', ProductionPlanViewset, basename='生产计划管理')
# 采购计划管理
router.register(r'MineralPurchasePlan', PurchasePlanView, basename='采购计划管理')
# 货品统计分组管理
router.register(r'MineralProductGroup', ProductGroupView, basename='货品统计分组管理')

# 文件流下载
router.register('downloadfile', UserDictExportViewset, basename='测试文件流下载'),

# ------------------出纳管理   新增 views ------------------------------- #
from cashier.views import *

# 抵押物管理 CashierStockViewset
router.register(r'CashierStock', CashierStockViewset, basename='抵押物管理')
# 抵押业务 CashierStockViewset
router.register(r'CashierBusiness', CashierBusinessViewset, basename='抵押业务管理')
# 贷款管理 CashierLoanViewset
router.register(r'CashierLoan', CashierLoanViewset, basename='贷款管理')
# 预警时间管理 ExpiryTimeControlViewset
router.register(r'CashierExpiryTimeControl', ExpiryTimeControlViewset, basename='预警时间管理')
# 银行管理 CashierBankViewset
router.register(r'CashierBank', CashierBankViewset, basename='银行管理')
# 公司档案管理
router.register(r'CashierCompany', CashierCompanyViewset, basename='公司档案管理')
# 银行贷款合同管理 (改为合同了)
router.register(r'CashierBankLoanDetails', CashierBankLoanDetailsViewset, basename='银行贷款合同管理')
# 银行贷款明细管理
router.register(r'CashierLoanDetails', CashierLoanDetailsViewset, basename='银行贷款合同执行明细管理')

# 商业贷款还款明细管理
router.register(r'CashierCommercialLoanDetails', CashierCommercialLoanDetailsViewset, basename='商业贷款还款明细管理')
# 商业贷款汇款明细管理
router.register(r'CashierCommercialRemitDetail', CashierCommercialRemitDetailViewset, basename='商业贷款汇款明细管理')

# 贷款合同管理
router.register(r'CashierContract', CashierContractViewset, basename='商业贷款合同管理')

urlpatterns = [
    url(r'^swagger(?P<format>\.json|\.yaml)$', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
    path('', include(router.urls)),
    path('adminlogin/', LoginView.as_view(), name='后台登录'),
    path('wxminilogin/', WeChatMiniLoginView.as_view(), name='微信小程序登录'),
    path('wxapplogin/', WeChatAppLoginView.as_view(), name='微信APP三方登录'),
    path('mobilelogin/', MobileLoginView.as_view(), name='手机快速登录登录'),
    path('getcode/', MobileCodeView.as_view(), name='获取手机验证码'),
    path('uploadfile/', UploadLocalFile.as_view(), name='文件上传'),  # UploadFile UploadLocalFile
    path('test/', TestView.as_view(), name='测试接口'),
    path('userinfo/', UserInfo.as_view(), name='个人信息'),
    path('celery/', BeginCelery.as_view(), name='celery测试'),
    path('test_fuc/', test_fuc, name='celery测试'),

    # 综合报表 相关
    path('MineralReport/', ReportView.as_view(), name='综合报表'),
    path('MineralReport/get_insurance_model/', ReportFields.as_view(), name='综合报表字段'),

    path('redownloadfile/', DownLoadComprehensiveReportView, name='文件流2下载'),

]

if settings.DEBUG:
    import debug_toolbar

    urlpatterns.append(path(r'__debug__/', include(debug_toolbar.urls)))
